<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>ECMAScript 运算符 关系运算符</title>
    <script>

        /*
        关于字符串的比较
        它们的行为则不同。许多人认为小于表示“在字母顺序上靠前”，大于表示“在字母顺序上靠后”，但事实并非如此。对于字符串，第一个字符串中每个字符的代码都
        与会第二个字符串中对应位置的字符的代码进行数值比较。完成这种比较操作后，返回一个 Boolean 值。问题在于大写字母的代码都小于小写字母的代码，
        ，必须把两个数转换成相同的大小写形式（全大写或全小写的），然后再进行比较
        */
        function testStringCompare(){
            var bResult = "Blue" < "alpha";
            alert(bResult);	//输出 true 

            // 通过这种转换之后
            var cResult = "Blue".toLowerCase() < "alpha".toLowerCase()
            alert(cResult);  // 输出 false

        }

        /*
        对比字符串和数字 
        */
        function testCompareNumString(){

            /*
            上面这段代码比较的是字符串 "25" 和 "3"。两个运算数都是字符串，
            所以比较的是它们的字符代码（"2" 的字符代码是 50，"3" 的字符代码是 51）。
            */
            var bResult = "25" < "3";
            alert(bResult);	//输出 "true"

            /*
            字符串 "25" 将被转换成数字 25，然后与数字 3 进行比较，结果不出所料。
            */
            var cResult = "25" < 3;
            alert(cResult);	//输出 "false"

            /*
            无论何时比较一个数字和一个字符串，ECMAScript 都会把字符串转换成数字，然后按照数字顺序比较它们。
            不过，如果字符串不能转换成数字
            字母 "a" 不能转换成有意义的数字。不过，如果对它调用 parseInt() 方法，返回的是 NaN。
            根据规则，任何包含 NaN 的关系运算符都要返回 false，因此这段代码也输出 false：
            */
            var dResult = 'a' >= 3
            alert(dResult)

            var eResult = 'a' < 3
            alert(eResult);   // 都是false
        }


    </script>
</head>
<body>
    <button onclick="testStringCompare()">测试修改字符串对比</button>
    <button onclick="testCompareNumString()">测试数字和字符串对比</button>
</body>
</html>